<?php App::uses('AppModel', 'Model');

class RecorridoRealizadoEvento extends AppModel {

	/**
	 * Nombre de la tabla en base de datos
	 *
	 * Tabla relacionada con el modelo en cuestión, este atributo será usado para la generación 
	 * de consultas a la base de datos
	 *
	 * @var string
	 */
	public $useTable = "recorridos_realizados_eventos";
	/**
	 * Clave primaria de la tabla en base de datos
	 *
	 * Clave primaria que identifica cada registro de la tabla en cuestión
	 *
	 * @var string
	 */
	public $primaryKey = "id_recorrido_realizado_evento";
	/**
	 * Campo de la tabla a usar como etiqueta/descripción
	 *
	 * Nombre del campo que se mostrara cuando se hacen busquedas del modelo mediante el método finde('list')
	 *
	 * @var string
	 */
	public $displayField = "id_recorrido_realizado_evento";
	/**
	 * Nivel de recusividad para la busqueda de entidades relacionadas
	 *
	 * Este campo sirve para indicar si una consulta debe incluir las entidades
	 * relacionadas con el modelo en cuestión:
	 * 	-1	->	Solo información de tabla
	 * 	0	->	Información de tabla y de belongsTo
	 * 	1	->	Información de tabla, de belongsTo y de hasOne-hasMany
	 * 	2	->	Información de tabla, de belongsTo, hasOne-hasMany y hasOne-hasMany de los relacionados
	 *
	 * @var int
	 */
	public $recursive =0;
	/**
	 * Nombre del modelo
	 *
	 * Nombre del modelo que especifica como referirse a el en las consultas, busquedas, ingresos y 
	 * otras interacciones con la base de datos. 
	 *
	 * @var string
	 */
	public $name = "RecorridoRealizadoEvento";
	/**
	 * Orden por defecto
	 *
	 * Orden por defecto para las consultas que se realicen a la base de datos,
	 * se pueden incluir varios campos de la base de datos. Si se especifica
	 * otro orden, este no se tiene en cuenta.	 
	 *
	 * @var array(string)
	 */
	public $order = array("RecorridoRealizadoEvento.id_recorrido_realizado_evento");
	/**
	 * Relaciones muchos a uno existentes del modelo
	 */
	public $belongsTo = array(
		"Evento" => array(
				"className" => "Evento",
				"foreignKey" => "id_evento",
			),
		"RecorridoRealizado" => array(
				"className" => "RecorridoRealizado",
				"foreignKey" => "id_recorrido_realizado",
			),
	);
	/**
	*Validaciones de cada uno de los atributos del modelo
	*/
	public $validate = array(
		"id_recorrido_realizado_evento" => array(
					"notEmpty" => array(
							"rule" 			=> "notEmpty",
							"allowEmpty" 	=> false,
							"required" 		=> "update",
							"message" 		=> "Id del evento del recorrido realizado no puede estar vacio",
					),
					"naturalNumber_NoZero" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id del evento del recorrido realizado debe ser un número entero diferente de cero",
					),
					"isUnique" => array(
							"rule" 			=> array("isUnique"),
							"message" 		=> "Id del evento del recorrido realizado debe ser único",
					),
			),
		"id_evento" => array(
					"notEmpty" => array(
							"rule" 			=> "notEmpty",
							"allowEmpty" 	=> false,
							"required" 		=> true,
							"message" 		=> "Id del evento no puede estar vacio",
					),

					"naturalNumber_NoZero" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id del evento debe ser un número entero diferente de cero",
					),
			),
		"id_recorrido_realizado" => array(
					"notEmpty" => array(
							"rule" 			=> "notEmpty",
							"allowEmpty" 	=> false,
							"required" 		=> true,
							"message" 		=> "Id del recorrido realizado no puede estar vacio",
					),
					"naturalNumber_NoZero" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id del recorrido realizado debe ser un número entero diferente de cero",
					),
			),
		"fecha_hora_evento" => array(
					"notEmpty-1" => array(
							"rule" 			=> "notempty",
							"allowEmpty" 	=> false,
							"required" 		=> true,
							"message" 		=> "la descripcion del evento no puede estar vacia",
					),
			),
		'latitud' => array(
			'numeric-2' => array(
				'rule' => 'numeric',
				"allowEmpty" 	=> true,
				"required" 		=> false,
				'message' => 'la latitud del recorrido realizado debe ser un número'
			),
			'range-3' => array(
				'rule' => array('range', -90, 90),
				'message' => 'la latitud del recorrido realizado debe ser un número entre -90 y 90'
			)
        ),
        'longitud' => array(
			'numeric-2' => array(
				'rule' => 'numeric',
				"allowEmpty" 	=> true,
				"required" 		=> false,
				'message' => 'la longitud del recorrido realizado debe ser un número'
			),
			'range-3' => array(
				'rule' => array('range', -180, 180),
				'message' => 'la longitud del recorrido realizado debe ser un número entre -180 y 180'
			)
        ),
	);

	public function save($data = null, $validate = true, $isMobile=false, $fieldList = array()) {
	    $this->set($data);
	    if (!isset($data['RecorridoRealizadoEvento']['fecha_hora_evento'])) {
		   	$this->set(array('fecha_hora_evento'=>date("Y/m/j H:i:s")));
		}
		if ($validate) {
			$this->Evento->set('id_evento', $data['Evento']['id_evento']);
			if ($this->Evento->validates(array('fieldList' => array('id_evento')))) {
				$this->set(array("id_evento" => $data['Evento']['id_evento']
				));
			}
			
			$var = $data['RecorridoRealizado']['id_recorrido_realizado'];
			$this->RecorridoRealizado->set('id_recorrido_realizado', $data['RecorridoRealizado']['id_recorrido_realizado']);
			if($var !=null && $this->RecorridoRealizado->findByid_recorrido_realizado($var)){
				$this->set(array("id_recorrido_realizado" => $data['RecorridoRealizado']['id_recorrido_realizado']
				));
			}

			if ($this->validates()) {
				return parent::save($this->data, false, $fieldList);
			}
			else {
				return false;
			}
		}
		else {
			if(!$isMobile){
				$this->set(array(
						"id_recorrido_realizado" => $data['RecorridoRealizado']['id_recorrido_realizado'],
						"id_evento" => $data['Evento']['id_evento'],
					));
			}
		}
     	return parent::save($this->data, $validate, $fieldList);
	}
}
?>